{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "7292753d-d4e4-4ed9-89b4-89d60b6937fe",
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "import datetime\n",
    "import sklearn.preprocessing\n",
    "import sklearn.cluster"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "87d1f8ea-fdd6-4330-a248-ef28323222c9",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(62988, 44)\n"
     ]
    }
   ],
   "source": [
    "air_data_path = './datasets/air_data.csv'\n",
    "air_data = pd.read_csv(air_data_path)\n",
    "print(air_data.shape)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "9d21526a-9efe-4086-8afa-fcdf9ab550a0",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>MEMBER_NO</th>\n",
       "      <th>FFP_DATE</th>\n",
       "      <th>FIRST_FLIGHT_DATE</th>\n",
       "      <th>GENDER</th>\n",
       "      <th>FFP_TIER</th>\n",
       "      <th>WORK_CITY</th>\n",
       "      <th>WORK_PROVINCE</th>\n",
       "      <th>WORK_COUNTRY</th>\n",
       "      <th>AGE</th>\n",
       "      <th>LOAD_TIME</th>\n",
       "      <th>...</th>\n",
       "      <th>ADD_Point_SUM</th>\n",
       "      <th>Eli_Add_Point_Sum</th>\n",
       "      <th>L1Y_ELi_Add_Points</th>\n",
       "      <th>Points_Sum</th>\n",
       "      <th>L1Y_Points_Sum</th>\n",
       "      <th>Ration_L1Y_Flight_Count</th>\n",
       "      <th>Ration_P1Y_Flight_Count</th>\n",
       "      <th>Ration_P1Y_BPS</th>\n",
       "      <th>Ration_L1Y_BPS</th>\n",
       "      <th>Point_NotFlight</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>54993</td>\n",
       "      <td>2006/11/02</td>\n",
       "      <td>2008/12/24</td>\n",
       "      <td>男</td>\n",
       "      <td>6</td>\n",
       "      <td>.</td>\n",
       "      <td>北京</td>\n",
       "      <td>CN</td>\n",
       "      <td>31.0</td>\n",
       "      <td>2014/03/31</td>\n",
       "      <td>...</td>\n",
       "      <td>39992</td>\n",
       "      <td>114452</td>\n",
       "      <td>111100</td>\n",
       "      <td>619760</td>\n",
       "      <td>370211</td>\n",
       "      <td>0.509524</td>\n",
       "      <td>0.490476</td>\n",
       "      <td>0.487221</td>\n",
       "      <td>0.512777</td>\n",
       "      <td>50</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>28065</td>\n",
       "      <td>2007/02/19</td>\n",
       "      <td>2007/08/03</td>\n",
       "      <td>男</td>\n",
       "      <td>6</td>\n",
       "      <td>NaN</td>\n",
       "      <td>北京</td>\n",
       "      <td>CN</td>\n",
       "      <td>42.0</td>\n",
       "      <td>2014/03/31</td>\n",
       "      <td>...</td>\n",
       "      <td>12000</td>\n",
       "      <td>53288</td>\n",
       "      <td>53288</td>\n",
       "      <td>415768</td>\n",
       "      <td>238410</td>\n",
       "      <td>0.514286</td>\n",
       "      <td>0.485714</td>\n",
       "      <td>0.489289</td>\n",
       "      <td>0.510708</td>\n",
       "      <td>33</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>55106</td>\n",
       "      <td>2007/02/01</td>\n",
       "      <td>2007/08/30</td>\n",
       "      <td>男</td>\n",
       "      <td>6</td>\n",
       "      <td>.</td>\n",
       "      <td>北京</td>\n",
       "      <td>CN</td>\n",
       "      <td>40.0</td>\n",
       "      <td>2014/03/31</td>\n",
       "      <td>...</td>\n",
       "      <td>15491</td>\n",
       "      <td>55202</td>\n",
       "      <td>51711</td>\n",
       "      <td>406361</td>\n",
       "      <td>233798</td>\n",
       "      <td>0.518519</td>\n",
       "      <td>0.481481</td>\n",
       "      <td>0.481467</td>\n",
       "      <td>0.518530</td>\n",
       "      <td>26</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>21189</td>\n",
       "      <td>2008/08/22</td>\n",
       "      <td>2008/08/23</td>\n",
       "      <td>男</td>\n",
       "      <td>5</td>\n",
       "      <td>Los Angeles</td>\n",
       "      <td>CA</td>\n",
       "      <td>US</td>\n",
       "      <td>64.0</td>\n",
       "      <td>2014/03/31</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>34890</td>\n",
       "      <td>34890</td>\n",
       "      <td>372204</td>\n",
       "      <td>186100</td>\n",
       "      <td>0.434783</td>\n",
       "      <td>0.565217</td>\n",
       "      <td>0.551722</td>\n",
       "      <td>0.448275</td>\n",
       "      <td>12</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>39546</td>\n",
       "      <td>2009/04/10</td>\n",
       "      <td>2009/04/15</td>\n",
       "      <td>男</td>\n",
       "      <td>6</td>\n",
       "      <td>贵阳</td>\n",
       "      <td>贵州</td>\n",
       "      <td>CN</td>\n",
       "      <td>48.0</td>\n",
       "      <td>2014/03/31</td>\n",
       "      <td>...</td>\n",
       "      <td>22704</td>\n",
       "      <td>64969</td>\n",
       "      <td>64969</td>\n",
       "      <td>338813</td>\n",
       "      <td>210365</td>\n",
       "      <td>0.532895</td>\n",
       "      <td>0.467105</td>\n",
       "      <td>0.469054</td>\n",
       "      <td>0.530943</td>\n",
       "      <td>39</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 44 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "   MEMBER_NO    FFP_DATE FIRST_FLIGHT_DATE GENDER  FFP_TIER    WORK_CITY  \\\n",
       "0      54993  2006/11/02        2008/12/24      男         6            .   \n",
       "1      28065  2007/02/19        2007/08/03      男         6          NaN   \n",
       "2      55106  2007/02/01        2007/08/30      男         6            .   \n",
       "3      21189  2008/08/22        2008/08/23      男         5  Los Angeles   \n",
       "4      39546  2009/04/10        2009/04/15      男         6           贵阳   \n",
       "\n",
       "  WORK_PROVINCE WORK_COUNTRY   AGE   LOAD_TIME  ...  ADD_Point_SUM  \\\n",
       "0            北京           CN  31.0  2014/03/31  ...          39992   \n",
       "1            北京           CN  42.0  2014/03/31  ...          12000   \n",
       "2            北京           CN  40.0  2014/03/31  ...          15491   \n",
       "3            CA           US  64.0  2014/03/31  ...              0   \n",
       "4            贵州           CN  48.0  2014/03/31  ...          22704   \n",
       "\n",
       "   Eli_Add_Point_Sum  L1Y_ELi_Add_Points  Points_Sum  L1Y_Points_Sum  \\\n",
       "0             114452              111100      619760          370211   \n",
       "1              53288               53288      415768          238410   \n",
       "2              55202               51711      406361          233798   \n",
       "3              34890               34890      372204          186100   \n",
       "4              64969               64969      338813          210365   \n",
       "\n",
       "   Ration_L1Y_Flight_Count  Ration_P1Y_Flight_Count  Ration_P1Y_BPS  \\\n",
       "0                 0.509524                 0.490476        0.487221   \n",
       "1                 0.514286                 0.485714        0.489289   \n",
       "2                 0.518519                 0.481481        0.481467   \n",
       "3                 0.434783                 0.565217        0.551722   \n",
       "4                 0.532895                 0.467105        0.469054   \n",
       "\n",
       "  Ration_L1Y_BPS  Point_NotFlight  \n",
       "0       0.512777               50  \n",
       "1       0.510708               33  \n",
       "2       0.518530               26  \n",
       "3       0.448275               12  \n",
       "4       0.530943               39  \n",
       "\n",
       "[5 rows x 44 columns]"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "air_data.head(5)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "350bc4ae-7272-428f-8349-9104d5f5d81d",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "MEMBER_NO                    int64\n",
       "FFP_DATE                    object\n",
       "FIRST_FLIGHT_DATE           object\n",
       "GENDER                      object\n",
       "FFP_TIER                     int64\n",
       "WORK_CITY                   object\n",
       "WORK_PROVINCE               object\n",
       "WORK_COUNTRY                object\n",
       "AGE                        float64\n",
       "LOAD_TIME                   object\n",
       "FLIGHT_COUNT                 int64\n",
       "BP_SUM                       int64\n",
       "EP_SUM_YR_1                  int64\n",
       "EP_SUM_YR_2                  int64\n",
       "SUM_YR_1                   float64\n",
       "SUM_YR_2                   float64\n",
       "SEG_KM_SUM                   int64\n",
       "WEIGHTED_SEG_KM            float64\n",
       "LAST_FLIGHT_DATE            object\n",
       "AVG_FLIGHT_COUNT           float64\n",
       "AVG_BP_SUM                 float64\n",
       "BEGIN_TO_FIRST               int64\n",
       "LAST_TO_END                  int64\n",
       "AVG_INTERVAL               float64\n",
       "MAX_INTERVAL                 int64\n",
       "ADD_POINTS_SUM_YR_1          int64\n",
       "ADD_POINTS_SUM_YR_2          int64\n",
       "EXCHANGE_COUNT               int64\n",
       "avg_discount               float64\n",
       "P1Y_Flight_Count             int64\n",
       "L1Y_Flight_Count             int64\n",
       "P1Y_BP_SUM                   int64\n",
       "L1Y_BP_SUM                   int64\n",
       "EP_SUM                       int64\n",
       "ADD_Point_SUM                int64\n",
       "Eli_Add_Point_Sum            int64\n",
       "L1Y_ELi_Add_Points           int64\n",
       "Points_Sum                   int64\n",
       "L1Y_Points_Sum               int64\n",
       "Ration_L1Y_Flight_Count    float64\n",
       "Ration_P1Y_Flight_Count    float64\n",
       "Ration_P1Y_BPS             float64\n",
       "Ration_L1Y_BPS             float64\n",
       "Point_NotFlight              int64\n",
       "dtype: object"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "air_data.dtypes"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "a446a8ab-dc9c-4ed5-b0cc-0a23a6eecc70",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>count</th>\n",
       "      <th>mean</th>\n",
       "      <th>std</th>\n",
       "      <th>min</th>\n",
       "      <th>25%</th>\n",
       "      <th>50%</th>\n",
       "      <th>75%</th>\n",
       "      <th>max</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>MEMBER_NO</th>\n",
       "      <td>62988.0</td>\n",
       "      <td>31494.500000</td>\n",
       "      <td>18183.213715</td>\n",
       "      <td>1.00</td>\n",
       "      <td>15747.750000</td>\n",
       "      <td>31494.500000</td>\n",
       "      <td>47241.250000</td>\n",
       "      <td>62988.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>FFP_TIER</th>\n",
       "      <td>62988.0</td>\n",
       "      <td>4.102162</td>\n",
       "      <td>0.373856</td>\n",
       "      <td>4.00</td>\n",
       "      <td>4.000000</td>\n",
       "      <td>4.000000</td>\n",
       "      <td>4.000000</td>\n",
       "      <td>6.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>AGE</th>\n",
       "      <td>62568.0</td>\n",
       "      <td>42.476346</td>\n",
       "      <td>9.885915</td>\n",
       "      <td>6.00</td>\n",
       "      <td>35.000000</td>\n",
       "      <td>41.000000</td>\n",
       "      <td>48.000000</td>\n",
       "      <td>110.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>FLIGHT_COUNT</th>\n",
       "      <td>62988.0</td>\n",
       "      <td>11.839414</td>\n",
       "      <td>14.049471</td>\n",
       "      <td>2.00</td>\n",
       "      <td>3.000000</td>\n",
       "      <td>7.000000</td>\n",
       "      <td>15.000000</td>\n",
       "      <td>213.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>BP_SUM</th>\n",
       "      <td>62988.0</td>\n",
       "      <td>10925.081254</td>\n",
       "      <td>16339.486151</td>\n",
       "      <td>0.00</td>\n",
       "      <td>2518.000000</td>\n",
       "      <td>5700.000000</td>\n",
       "      <td>12831.000000</td>\n",
       "      <td>505308.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>EP_SUM_YR_1</th>\n",
       "      <td>62988.0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.00</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>EP_SUM_YR_2</th>\n",
       "      <td>62988.0</td>\n",
       "      <td>265.689623</td>\n",
       "      <td>1645.702854</td>\n",
       "      <td>0.00</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>74460.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>SUM_YR_1</th>\n",
       "      <td>62437.0</td>\n",
       "      <td>5355.376064</td>\n",
       "      <td>8109.450147</td>\n",
       "      <td>0.00</td>\n",
       "      <td>1003.000000</td>\n",
       "      <td>2800.000000</td>\n",
       "      <td>6574.000000</td>\n",
       "      <td>239560.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>SUM_YR_2</th>\n",
       "      <td>62850.0</td>\n",
       "      <td>5604.026014</td>\n",
       "      <td>8703.364247</td>\n",
       "      <td>0.00</td>\n",
       "      <td>780.000000</td>\n",
       "      <td>2773.000000</td>\n",
       "      <td>6845.750000</td>\n",
       "      <td>234188.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>SEG_KM_SUM</th>\n",
       "      <td>62988.0</td>\n",
       "      <td>17123.878691</td>\n",
       "      <td>20960.844623</td>\n",
       "      <td>368.00</td>\n",
       "      <td>4747.000000</td>\n",
       "      <td>9994.000000</td>\n",
       "      <td>21271.250000</td>\n",
       "      <td>580717.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>WEIGHTED_SEG_KM</th>\n",
       "      <td>62988.0</td>\n",
       "      <td>12777.152439</td>\n",
       "      <td>17578.586695</td>\n",
       "      <td>0.00</td>\n",
       "      <td>3219.045000</td>\n",
       "      <td>6978.255000</td>\n",
       "      <td>15299.632500</td>\n",
       "      <td>558440.140000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>AVG_FLIGHT_COUNT</th>\n",
       "      <td>62988.0</td>\n",
       "      <td>1.542154</td>\n",
       "      <td>1.786996</td>\n",
       "      <td>0.25</td>\n",
       "      <td>0.428571</td>\n",
       "      <td>0.875000</td>\n",
       "      <td>1.875000</td>\n",
       "      <td>26.625000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>AVG_BP_SUM</th>\n",
       "      <td>62988.0</td>\n",
       "      <td>1421.440249</td>\n",
       "      <td>2083.121324</td>\n",
       "      <td>0.00</td>\n",
       "      <td>336.000000</td>\n",
       "      <td>752.375000</td>\n",
       "      <td>1690.270833</td>\n",
       "      <td>63163.500000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>BEGIN_TO_FIRST</th>\n",
       "      <td>62988.0</td>\n",
       "      <td>120.145488</td>\n",
       "      <td>159.572867</td>\n",
       "      <td>0.00</td>\n",
       "      <td>9.000000</td>\n",
       "      <td>50.000000</td>\n",
       "      <td>166.000000</td>\n",
       "      <td>729.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>LAST_TO_END</th>\n",
       "      <td>62988.0</td>\n",
       "      <td>176.120102</td>\n",
       "      <td>183.822223</td>\n",
       "      <td>1.00</td>\n",
       "      <td>29.000000</td>\n",
       "      <td>108.000000</td>\n",
       "      <td>268.000000</td>\n",
       "      <td>731.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>AVG_INTERVAL</th>\n",
       "      <td>62988.0</td>\n",
       "      <td>67.749788</td>\n",
       "      <td>77.517866</td>\n",
       "      <td>0.00</td>\n",
       "      <td>23.370370</td>\n",
       "      <td>44.666667</td>\n",
       "      <td>82.000000</td>\n",
       "      <td>728.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>MAX_INTERVAL</th>\n",
       "      <td>62988.0</td>\n",
       "      <td>166.033895</td>\n",
       "      <td>123.397180</td>\n",
       "      <td>0.00</td>\n",
       "      <td>79.000000</td>\n",
       "      <td>143.000000</td>\n",
       "      <td>228.000000</td>\n",
       "      <td>728.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>ADD_POINTS_SUM_YR_1</th>\n",
       "      <td>62988.0</td>\n",
       "      <td>540.316965</td>\n",
       "      <td>3956.083455</td>\n",
       "      <td>0.00</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>600000.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>ADD_POINTS_SUM_YR_2</th>\n",
       "      <td>62988.0</td>\n",
       "      <td>814.689258</td>\n",
       "      <td>5121.796929</td>\n",
       "      <td>0.00</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>728282.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>EXCHANGE_COUNT</th>\n",
       "      <td>62988.0</td>\n",
       "      <td>0.319775</td>\n",
       "      <td>1.136004</td>\n",
       "      <td>0.00</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>46.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>avg_discount</th>\n",
       "      <td>62988.0</td>\n",
       "      <td>0.721558</td>\n",
       "      <td>0.185427</td>\n",
       "      <td>0.00</td>\n",
       "      <td>0.611997</td>\n",
       "      <td>0.711856</td>\n",
       "      <td>0.809476</td>\n",
       "      <td>1.500000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>P1Y_Flight_Count</th>\n",
       "      <td>62988.0</td>\n",
       "      <td>5.766257</td>\n",
       "      <td>7.210922</td>\n",
       "      <td>0.00</td>\n",
       "      <td>2.000000</td>\n",
       "      <td>3.000000</td>\n",
       "      <td>7.000000</td>\n",
       "      <td>118.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>L1Y_Flight_Count</th>\n",
       "      <td>62988.0</td>\n",
       "      <td>6.073157</td>\n",
       "      <td>8.175127</td>\n",
       "      <td>0.00</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>3.000000</td>\n",
       "      <td>8.000000</td>\n",
       "      <td>111.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>P1Y_BP_SUM</th>\n",
       "      <td>62988.0</td>\n",
       "      <td>5366.720550</td>\n",
       "      <td>8537.773021</td>\n",
       "      <td>0.00</td>\n",
       "      <td>946.000000</td>\n",
       "      <td>2692.000000</td>\n",
       "      <td>6485.250000</td>\n",
       "      <td>246197.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>L1Y_BP_SUM</th>\n",
       "      <td>62988.0</td>\n",
       "      <td>5558.360704</td>\n",
       "      <td>9351.956952</td>\n",
       "      <td>0.00</td>\n",
       "      <td>545.000000</td>\n",
       "      <td>2547.000000</td>\n",
       "      <td>6619.250000</td>\n",
       "      <td>259111.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>EP_SUM</th>\n",
       "      <td>62988.0</td>\n",
       "      <td>265.689623</td>\n",
       "      <td>1645.702854</td>\n",
       "      <td>0.00</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>74460.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>ADD_Point_SUM</th>\n",
       "      <td>62988.0</td>\n",
       "      <td>1355.006223</td>\n",
       "      <td>7868.477000</td>\n",
       "      <td>0.00</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>984938.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Eli_Add_Point_Sum</th>\n",
       "      <td>62988.0</td>\n",
       "      <td>1620.695847</td>\n",
       "      <td>8294.398955</td>\n",
       "      <td>0.00</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>345.000000</td>\n",
       "      <td>984938.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>L1Y_ELi_Add_Points</th>\n",
       "      <td>62988.0</td>\n",
       "      <td>1080.378882</td>\n",
       "      <td>5639.857254</td>\n",
       "      <td>0.00</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>728282.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Points_Sum</th>\n",
       "      <td>62988.0</td>\n",
       "      <td>12545.777100</td>\n",
       "      <td>20507.816700</td>\n",
       "      <td>0.00</td>\n",
       "      <td>2775.000000</td>\n",
       "      <td>6328.500000</td>\n",
       "      <td>14302.500000</td>\n",
       "      <td>985572.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>L1Y_Points_Sum</th>\n",
       "      <td>62988.0</td>\n",
       "      <td>6638.739585</td>\n",
       "      <td>12601.819863</td>\n",
       "      <td>0.00</td>\n",
       "      <td>700.000000</td>\n",
       "      <td>2860.500000</td>\n",
       "      <td>7500.000000</td>\n",
       "      <td>728282.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Ration_L1Y_Flight_Count</th>\n",
       "      <td>62988.0</td>\n",
       "      <td>0.486419</td>\n",
       "      <td>0.319105</td>\n",
       "      <td>0.00</td>\n",
       "      <td>0.250000</td>\n",
       "      <td>0.500000</td>\n",
       "      <td>0.711111</td>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Ration_P1Y_Flight_Count</th>\n",
       "      <td>62988.0</td>\n",
       "      <td>0.513581</td>\n",
       "      <td>0.319105</td>\n",
       "      <td>0.00</td>\n",
       "      <td>0.288889</td>\n",
       "      <td>0.500000</td>\n",
       "      <td>0.750000</td>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Ration_P1Y_BPS</th>\n",
       "      <td>62988.0</td>\n",
       "      <td>0.522293</td>\n",
       "      <td>0.339632</td>\n",
       "      <td>0.00</td>\n",
       "      <td>0.258150</td>\n",
       "      <td>0.514252</td>\n",
       "      <td>0.815091</td>\n",
       "      <td>0.999989</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Ration_L1Y_BPS</th>\n",
       "      <td>62988.0</td>\n",
       "      <td>0.468422</td>\n",
       "      <td>0.338956</td>\n",
       "      <td>0.00</td>\n",
       "      <td>0.167954</td>\n",
       "      <td>0.476747</td>\n",
       "      <td>0.728375</td>\n",
       "      <td>0.999993</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Point_NotFlight</th>\n",
       "      <td>62988.0</td>\n",
       "      <td>2.728155</td>\n",
       "      <td>7.364164</td>\n",
       "      <td>0.00</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>140.000000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                           count          mean           std     min  \\\n",
       "MEMBER_NO                62988.0  31494.500000  18183.213715    1.00   \n",
       "FFP_TIER                 62988.0      4.102162      0.373856    4.00   \n",
       "AGE                      62568.0     42.476346      9.885915    6.00   \n",
       "FLIGHT_COUNT             62988.0     11.839414     14.049471    2.00   \n",
       "BP_SUM                   62988.0  10925.081254  16339.486151    0.00   \n",
       "EP_SUM_YR_1              62988.0      0.000000      0.000000    0.00   \n",
       "EP_SUM_YR_2              62988.0    265.689623   1645.702854    0.00   \n",
       "SUM_YR_1                 62437.0   5355.376064   8109.450147    0.00   \n",
       "SUM_YR_2                 62850.0   5604.026014   8703.364247    0.00   \n",
       "SEG_KM_SUM               62988.0  17123.878691  20960.844623  368.00   \n",
       "WEIGHTED_SEG_KM          62988.0  12777.152439  17578.586695    0.00   \n",
       "AVG_FLIGHT_COUNT         62988.0      1.542154      1.786996    0.25   \n",
       "AVG_BP_SUM               62988.0   1421.440249   2083.121324    0.00   \n",
       "BEGIN_TO_FIRST           62988.0    120.145488    159.572867    0.00   \n",
       "LAST_TO_END              62988.0    176.120102    183.822223    1.00   \n",
       "AVG_INTERVAL             62988.0     67.749788     77.517866    0.00   \n",
       "MAX_INTERVAL             62988.0    166.033895    123.397180    0.00   \n",
       "ADD_POINTS_SUM_YR_1      62988.0    540.316965   3956.083455    0.00   \n",
       "ADD_POINTS_SUM_YR_2      62988.0    814.689258   5121.796929    0.00   \n",
       "EXCHANGE_COUNT           62988.0      0.319775      1.136004    0.00   \n",
       "avg_discount             62988.0      0.721558      0.185427    0.00   \n",
       "P1Y_Flight_Count         62988.0      5.766257      7.210922    0.00   \n",
       "L1Y_Flight_Count         62988.0      6.073157      8.175127    0.00   \n",
       "P1Y_BP_SUM               62988.0   5366.720550   8537.773021    0.00   \n",
       "L1Y_BP_SUM               62988.0   5558.360704   9351.956952    0.00   \n",
       "EP_SUM                   62988.0    265.689623   1645.702854    0.00   \n",
       "ADD_Point_SUM            62988.0   1355.006223   7868.477000    0.00   \n",
       "Eli_Add_Point_Sum        62988.0   1620.695847   8294.398955    0.00   \n",
       "L1Y_ELi_Add_Points       62988.0   1080.378882   5639.857254    0.00   \n",
       "Points_Sum               62988.0  12545.777100  20507.816700    0.00   \n",
       "L1Y_Points_Sum           62988.0   6638.739585  12601.819863    0.00   \n",
       "Ration_L1Y_Flight_Count  62988.0      0.486419      0.319105    0.00   \n",
       "Ration_P1Y_Flight_Count  62988.0      0.513581      0.319105    0.00   \n",
       "Ration_P1Y_BPS           62988.0      0.522293      0.339632    0.00   \n",
       "Ration_L1Y_BPS           62988.0      0.468422      0.338956    0.00   \n",
       "Point_NotFlight          62988.0      2.728155      7.364164    0.00   \n",
       "\n",
       "                                  25%           50%           75%  \\\n",
       "MEMBER_NO                15747.750000  31494.500000  47241.250000   \n",
       "FFP_TIER                     4.000000      4.000000      4.000000   \n",
       "AGE                         35.000000     41.000000     48.000000   \n",
       "FLIGHT_COUNT                 3.000000      7.000000     15.000000   \n",
       "BP_SUM                    2518.000000   5700.000000  12831.000000   \n",
       "EP_SUM_YR_1                  0.000000      0.000000      0.000000   \n",
       "EP_SUM_YR_2                  0.000000      0.000000      0.000000   \n",
       "SUM_YR_1                  1003.000000   2800.000000   6574.000000   \n",
       "SUM_YR_2                   780.000000   2773.000000   6845.750000   \n",
       "SEG_KM_SUM                4747.000000   9994.000000  21271.250000   \n",
       "WEIGHTED_SEG_KM           3219.045000   6978.255000  15299.632500   \n",
       "AVG_FLIGHT_COUNT             0.428571      0.875000      1.875000   \n",
       "AVG_BP_SUM                 336.000000    752.375000   1690.270833   \n",
       "BEGIN_TO_FIRST               9.000000     50.000000    166.000000   \n",
       "LAST_TO_END                 29.000000    108.000000    268.000000   \n",
       "AVG_INTERVAL                23.370370     44.666667     82.000000   \n",
       "MAX_INTERVAL                79.000000    143.000000    228.000000   \n",
       "ADD_POINTS_SUM_YR_1          0.000000      0.000000      0.000000   \n",
       "ADD_POINTS_SUM_YR_2          0.000000      0.000000      0.000000   \n",
       "EXCHANGE_COUNT               0.000000      0.000000      0.000000   \n",
       "avg_discount                 0.611997      0.711856      0.809476   \n",
       "P1Y_Flight_Count             2.000000      3.000000      7.000000   \n",
       "L1Y_Flight_Count             1.000000      3.000000      8.000000   \n",
       "P1Y_BP_SUM                 946.000000   2692.000000   6485.250000   \n",
       "L1Y_BP_SUM                 545.000000   2547.000000   6619.250000   \n",
       "EP_SUM                       0.000000      0.000000      0.000000   \n",
       "ADD_Point_SUM                0.000000      0.000000      0.000000   \n",
       "Eli_Add_Point_Sum            0.000000      0.000000    345.000000   \n",
       "L1Y_ELi_Add_Points           0.000000      0.000000      0.000000   \n",
       "Points_Sum                2775.000000   6328.500000  14302.500000   \n",
       "L1Y_Points_Sum             700.000000   2860.500000   7500.000000   \n",
       "Ration_L1Y_Flight_Count      0.250000      0.500000      0.711111   \n",
       "Ration_P1Y_Flight_Count      0.288889      0.500000      0.750000   \n",
       "Ration_P1Y_BPS               0.258150      0.514252      0.815091   \n",
       "Ration_L1Y_BPS               0.167954      0.476747      0.728375   \n",
       "Point_NotFlight              0.000000      0.000000      1.000000   \n",
       "\n",
       "                                   max  \n",
       "MEMBER_NO                 62988.000000  \n",
       "FFP_TIER                      6.000000  \n",
       "AGE                         110.000000  \n",
       "FLIGHT_COUNT                213.000000  \n",
       "BP_SUM                   505308.000000  \n",
       "EP_SUM_YR_1                   0.000000  \n",
       "EP_SUM_YR_2               74460.000000  \n",
       "SUM_YR_1                 239560.000000  \n",
       "SUM_YR_2                 234188.000000  \n",
       "SEG_KM_SUM               580717.000000  \n",
       "WEIGHTED_SEG_KM          558440.140000  \n",
       "AVG_FLIGHT_COUNT             26.625000  \n",
       "AVG_BP_SUM                63163.500000  \n",
       "BEGIN_TO_FIRST              729.000000  \n",
       "LAST_TO_END                 731.000000  \n",
       "AVG_INTERVAL                728.000000  \n",
       "MAX_INTERVAL                728.000000  \n",
       "ADD_POINTS_SUM_YR_1      600000.000000  \n",
       "ADD_POINTS_SUM_YR_2      728282.000000  \n",
       "EXCHANGE_COUNT               46.000000  \n",
       "avg_discount                  1.500000  \n",
       "P1Y_Flight_Count            118.000000  \n",
       "L1Y_Flight_Count            111.000000  \n",
       "P1Y_BP_SUM               246197.000000  \n",
       "L1Y_BP_SUM               259111.000000  \n",
       "EP_SUM                    74460.000000  \n",
       "ADD_Point_SUM            984938.000000  \n",
       "Eli_Add_Point_Sum        984938.000000  \n",
       "L1Y_ELi_Add_Points       728282.000000  \n",
       "Points_Sum               985572.000000  \n",
       "L1Y_Points_Sum           728282.000000  \n",
       "Ration_L1Y_Flight_Count       1.000000  \n",
       "Ration_P1Y_Flight_Count       1.000000  \n",
       "Ration_P1Y_BPS                0.999989  \n",
       "Ration_L1Y_BPS                0.999993  \n",
       "Point_NotFlight             140.000000  "
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "air_data.describe().T"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "d95f9e7b-a8de-4fe5-ad5e-0ebe917718da",
   "metadata": {},
   "outputs": [],
   "source": [
    "dup = air_data[air_data['MEMBER_NO'].duplicated()]\n",
    "if len(dup) != 0:\n",
    "    print(\"There are duplication in the data:\")\n",
    "    print(dup)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "0148c3ca-9de2-4b2a-b158-6b327b9e9492",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "MEMBER_NO                  False\n",
       "FFP_DATE                   False\n",
       "FIRST_FLIGHT_DATE          False\n",
       "GENDER                      True\n",
       "FFP_TIER                   False\n",
       "WORK_CITY                   True\n",
       "WORK_PROVINCE               True\n",
       "WORK_COUNTRY                True\n",
       "AGE                         True\n",
       "LOAD_TIME                  False\n",
       "FLIGHT_COUNT               False\n",
       "BP_SUM                     False\n",
       "EP_SUM_YR_1                False\n",
       "EP_SUM_YR_2                False\n",
       "SUM_YR_1                    True\n",
       "SUM_YR_2                    True\n",
       "SEG_KM_SUM                 False\n",
       "WEIGHTED_SEG_KM            False\n",
       "LAST_FLIGHT_DATE           False\n",
       "AVG_FLIGHT_COUNT           False\n",
       "AVG_BP_SUM                 False\n",
       "BEGIN_TO_FIRST             False\n",
       "LAST_TO_END                False\n",
       "AVG_INTERVAL               False\n",
       "MAX_INTERVAL               False\n",
       "ADD_POINTS_SUM_YR_1        False\n",
       "ADD_POINTS_SUM_YR_2        False\n",
       "EXCHANGE_COUNT             False\n",
       "avg_discount               False\n",
       "P1Y_Flight_Count           False\n",
       "L1Y_Flight_Count           False\n",
       "P1Y_BP_SUM                 False\n",
       "L1Y_BP_SUM                 False\n",
       "EP_SUM                     False\n",
       "ADD_Point_SUM              False\n",
       "Eli_Add_Point_Sum          False\n",
       "L1Y_ELi_Add_Points         False\n",
       "Points_Sum                 False\n",
       "L1Y_Points_Sum             False\n",
       "Ration_L1Y_Flight_Count    False\n",
       "Ration_P1Y_Flight_Count    False\n",
       "Ration_P1Y_BPS             False\n",
       "Ration_L1Y_BPS             False\n",
       "Point_NotFlight            False\n",
       "dtype: bool"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "air_data.isnull().any()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "9d691dac-ea37-45b2-92ae-b9f623a0de74",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(62044, 44)\n"
     ]
    }
   ],
   "source": [
    "boolean_filter = air_data['SUM_YR_1'].notnull() & air_data['SUM_YR_2'].notnull()\n",
    "air_data = air_data[boolean_filter]\n",
    "\n",
    "filter_1 = air_data['SUM_YR_1'] != 0\n",
    "filter_2 = air_data['SUM_YR_2'] != 0\n",
    "air_data = air_data[filter_1 | filter_2]\n",
    "\n",
    "print(air_data.shape)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "9970aba1-a683-4b41-82fc-42c12cc8237b",
   "metadata": {},
   "outputs": [],
   "source": [
    "load_time = datetime.datetime.strptime('2014/03/31', '%Y/%m/%d')\n",
    "ffp_dates = [datetime.datetime.strptime(ffp_date, '%Y/%m/%d') for ffp_date in air_data['FFP_DATE']]\n",
    "length_of_relationship = [(load_time - ffp_date).days for ffp_date in ffp_dates]\n",
    "air_data['LEN_REL'] = length_of_relationship"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "a2e9e2c8-5f79-4505-b3e9-17bc3691f382",
   "metadata": {},
   "outputs": [],
   "source": [
    "features = ['LEN_REL','FLIGHT_COUNT','avg_discount','SEG_KM_SUM','LAST_TO_END']\n",
    "data = air_data[features]\n",
    "features = ['L','F','C','M','R']\n",
    "data.columns = features"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "ddc99d11-1de1-49f7-910e-01a3a54d1e69",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "      L    F         C       M   R\n",
      "0  2706  210  0.961639  580717   1\n",
      "1  2597  140  1.252314  293678   7\n",
      "2  2615  135  1.254676  283712  11\n",
      "3  2047   23  1.090870  281336  97\n",
      "4  1816  152  0.970658  309928   5\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>count</th>\n",
       "      <th>mean</th>\n",
       "      <th>std</th>\n",
       "      <th>min</th>\n",
       "      <th>25%</th>\n",
       "      <th>50%</th>\n",
       "      <th>75%</th>\n",
       "      <th>max</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>L</th>\n",
       "      <td>62044.0</td>\n",
       "      <td>1488.691090</td>\n",
       "      <td>847.880920</td>\n",
       "      <td>365.000000</td>\n",
       "      <td>735.000000</td>\n",
       "      <td>1278.000000</td>\n",
       "      <td>2182.000000</td>\n",
       "      <td>3437.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>F</th>\n",
       "      <td>62044.0</td>\n",
       "      <td>11.971359</td>\n",
       "      <td>14.110619</td>\n",
       "      <td>2.000000</td>\n",
       "      <td>3.000000</td>\n",
       "      <td>7.000000</td>\n",
       "      <td>15.000000</td>\n",
       "      <td>213.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>C</th>\n",
       "      <td>62044.0</td>\n",
       "      <td>0.722180</td>\n",
       "      <td>0.184833</td>\n",
       "      <td>0.136017</td>\n",
       "      <td>0.613085</td>\n",
       "      <td>0.712162</td>\n",
       "      <td>0.809293</td>\n",
       "      <td>1.5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>M</th>\n",
       "      <td>62044.0</td>\n",
       "      <td>17321.694749</td>\n",
       "      <td>21052.728111</td>\n",
       "      <td>368.000000</td>\n",
       "      <td>4874.000000</td>\n",
       "      <td>10200.000000</td>\n",
       "      <td>21522.500000</td>\n",
       "      <td>580717.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>R</th>\n",
       "      <td>62044.0</td>\n",
       "      <td>172.532703</td>\n",
       "      <td>181.526164</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>29.000000</td>\n",
       "      <td>105.000000</td>\n",
       "      <td>260.000000</td>\n",
       "      <td>731.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "     count          mean           std         min          25%           50%  \\\n",
       "L  62044.0   1488.691090    847.880920  365.000000   735.000000   1278.000000   \n",
       "F  62044.0     11.971359     14.110619    2.000000     3.000000      7.000000   \n",
       "C  62044.0      0.722180      0.184833    0.136017     0.613085      0.712162   \n",
       "M  62044.0  17321.694749  21052.728111  368.000000  4874.000000  10200.000000   \n",
       "R  62044.0    172.532703    181.526164    1.000000    29.000000    105.000000   \n",
       "\n",
       "            75%       max  \n",
       "L   2182.000000    3437.0  \n",
       "F     15.000000     213.0  \n",
       "C      0.809293       1.5  \n",
       "M  21522.500000  580717.0  \n",
       "R    260.000000     731.0  "
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "print(data.head(5))\n",
    "data.describe().T"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "6727eccd-2ec7-4776-acef-2c83f6119e7f",
   "metadata": {},
   "outputs": [],
   "source": [
    "ss = sklearn.preprocessing.StandardScaler(with_mean=True, with_std=True)#标准化\n",
    "data = ss.fit_transform(data) #数据转换\n",
    "data = pd.DataFrame(data, columns=features)\n",
    "\n",
    "data_db = data.copy()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "c63777d2-63ff-4a2d-add0-a234ac8419b5",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>count</th>\n",
       "      <th>mean</th>\n",
       "      <th>std</th>\n",
       "      <th>min</th>\n",
       "      <th>25%</th>\n",
       "      <th>50%</th>\n",
       "      <th>75%</th>\n",
       "      <th>max</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>L</th>\n",
       "      <td>62044.0</td>\n",
       "      <td>1.246004e-16</td>\n",
       "      <td>1.000008</td>\n",
       "      <td>-1.325304</td>\n",
       "      <td>-0.888919</td>\n",
       "      <td>-0.248493</td>\n",
       "      <td>0.817703</td>\n",
       "      <td>2.297875</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>F</th>\n",
       "      <td>62044.0</td>\n",
       "      <td>5.863547e-17</td>\n",
       "      <td>1.000008</td>\n",
       "      <td>-0.706662</td>\n",
       "      <td>-0.635793</td>\n",
       "      <td>-0.352316</td>\n",
       "      <td>0.214637</td>\n",
       "      <td>14.246736</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>C</th>\n",
       "      <td>62044.0</td>\n",
       "      <td>3.957894e-16</td>\n",
       "      <td>1.000008</td>\n",
       "      <td>-3.171335</td>\n",
       "      <td>-0.590238</td>\n",
       "      <td>-0.054200</td>\n",
       "      <td>0.471308</td>\n",
       "      <td>4.208258</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>M</th>\n",
       "      <td>62044.0</td>\n",
       "      <td>-1.026121e-16</td>\n",
       "      <td>1.000008</td>\n",
       "      <td>-0.805303</td>\n",
       "      <td>-0.591268</td>\n",
       "      <td>-0.338282</td>\n",
       "      <td>0.199539</td>\n",
       "      <td>26.761370</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>R</th>\n",
       "      <td>62044.0</td>\n",
       "      <td>4.397660e-17</td>\n",
       "      <td>1.000008</td>\n",
       "      <td>-0.944955</td>\n",
       "      <td>-0.790706</td>\n",
       "      <td>-0.372030</td>\n",
       "      <td>0.481848</td>\n",
       "      <td>3.076536</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "     count          mean       std       min       25%       50%       75%  \\\n",
       "L  62044.0  1.246004e-16  1.000008 -1.325304 -0.888919 -0.248493  0.817703   \n",
       "F  62044.0  5.863547e-17  1.000008 -0.706662 -0.635793 -0.352316  0.214637   \n",
       "C  62044.0  3.957894e-16  1.000008 -3.171335 -0.590238 -0.054200  0.471308   \n",
       "M  62044.0 -1.026121e-16  1.000008 -0.805303 -0.591268 -0.338282  0.199539   \n",
       "R  62044.0  4.397660e-17  1.000008 -0.944955 -0.790706 -0.372030  0.481848   \n",
       "\n",
       "         max  \n",
       "L   2.297875  \n",
       "F  14.246736  \n",
       "C   4.208258  \n",
       "M  26.761370  \n",
       "R   3.076536  "
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data.describe().T"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "id": "40581568-e119-4143-b46d-f9918152a5c4",
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.cluster import KMeans\n",
    "import pandas as pd\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "id": "30d67a7e-b7ca-45c6-85e6-60534ffc4bb3",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<style>#sk-container-id-1 {\n",
       "  /* Definition of color scheme common for light and dark mode */\n",
       "  --sklearn-color-text: black;\n",
       "  --sklearn-color-line: gray;\n",
       "  /* Definition of color scheme for unfitted estimators */\n",
       "  --sklearn-color-unfitted-level-0: #fff5e6;\n",
       "  --sklearn-color-unfitted-level-1: #f6e4d2;\n",
       "  --sklearn-color-unfitted-level-2: #ffe0b3;\n",
       "  --sklearn-color-unfitted-level-3: chocolate;\n",
       "  /* Definition of color scheme for fitted estimators */\n",
       "  --sklearn-color-fitted-level-0: #f0f8ff;\n",
       "  --sklearn-color-fitted-level-1: #d4ebff;\n",
       "  --sklearn-color-fitted-level-2: #b3dbfd;\n",
       "  --sklearn-color-fitted-level-3: cornflowerblue;\n",
       "\n",
       "  /* Specific color for light theme */\n",
       "  --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
       "  --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, white)));\n",
       "  --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
       "  --sklearn-color-icon: #696969;\n",
       "\n",
       "  @media (prefers-color-scheme: dark) {\n",
       "    /* Redefinition of color scheme for dark theme */\n",
       "    --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
       "    --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, #111)));\n",
       "    --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
       "    --sklearn-color-icon: #878787;\n",
       "  }\n",
       "}\n",
       "\n",
       "#sk-container-id-1 {\n",
       "  color: var(--sklearn-color-text);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 pre {\n",
       "  padding: 0;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 input.sk-hidden--visually {\n",
       "  border: 0;\n",
       "  clip: rect(1px 1px 1px 1px);\n",
       "  clip: rect(1px, 1px, 1px, 1px);\n",
       "  height: 1px;\n",
       "  margin: -1px;\n",
       "  overflow: hidden;\n",
       "  padding: 0;\n",
       "  position: absolute;\n",
       "  width: 1px;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-dashed-wrapped {\n",
       "  border: 1px dashed var(--sklearn-color-line);\n",
       "  margin: 0 0.4em 0.5em 0.4em;\n",
       "  box-sizing: border-box;\n",
       "  padding-bottom: 0.4em;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-container {\n",
       "  /* jupyter's `normalize.less` sets `[hidden] { display: none; }`\n",
       "     but bootstrap.min.css set `[hidden] { display: none !important; }`\n",
       "     so we also need the `!important` here to be able to override the\n",
       "     default hidden behavior on the sphinx rendered scikit-learn.org.\n",
       "     See: https://github.com/scikit-learn/scikit-learn/issues/21755 */\n",
       "  display: inline-block !important;\n",
       "  position: relative;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-text-repr-fallback {\n",
       "  display: none;\n",
       "}\n",
       "\n",
       "div.sk-parallel-item,\n",
       "div.sk-serial,\n",
       "div.sk-item {\n",
       "  /* draw centered vertical line to link estimators */\n",
       "  background-image: linear-gradient(var(--sklearn-color-text-on-default-background), var(--sklearn-color-text-on-default-background));\n",
       "  background-size: 2px 100%;\n",
       "  background-repeat: no-repeat;\n",
       "  background-position: center center;\n",
       "}\n",
       "\n",
       "/* Parallel-specific style estimator block */\n",
       "\n",
       "#sk-container-id-1 div.sk-parallel-item::after {\n",
       "  content: \"\";\n",
       "  width: 100%;\n",
       "  border-bottom: 2px solid var(--sklearn-color-text-on-default-background);\n",
       "  flex-grow: 1;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-parallel {\n",
       "  display: flex;\n",
       "  align-items: stretch;\n",
       "  justify-content: center;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  position: relative;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-parallel-item {\n",
       "  display: flex;\n",
       "  flex-direction: column;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-parallel-item:first-child::after {\n",
       "  align-self: flex-end;\n",
       "  width: 50%;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-parallel-item:last-child::after {\n",
       "  align-self: flex-start;\n",
       "  width: 50%;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-parallel-item:only-child::after {\n",
       "  width: 0;\n",
       "}\n",
       "\n",
       "/* Serial-specific style estimator block */\n",
       "\n",
       "#sk-container-id-1 div.sk-serial {\n",
       "  display: flex;\n",
       "  flex-direction: column;\n",
       "  align-items: center;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  padding-right: 1em;\n",
       "  padding-left: 1em;\n",
       "}\n",
       "\n",
       "\n",
       "/* Toggleable style: style used for estimator/Pipeline/ColumnTransformer box that is\n",
       "clickable and can be expanded/collapsed.\n",
       "- Pipeline and ColumnTransformer use this feature and define the default style\n",
       "- Estimators will overwrite some part of the style using the `sk-estimator` class\n",
       "*/\n",
       "\n",
       "/* Pipeline and ColumnTransformer style (default) */\n",
       "\n",
       "#sk-container-id-1 div.sk-toggleable {\n",
       "  /* Default theme specific background. It is overwritten whether we have a\n",
       "  specific estimator or a Pipeline/ColumnTransformer */\n",
       "  background-color: var(--sklearn-color-background);\n",
       "}\n",
       "\n",
       "/* Toggleable label */\n",
       "#sk-container-id-1 label.sk-toggleable__label {\n",
       "  cursor: pointer;\n",
       "  display: block;\n",
       "  width: 100%;\n",
       "  margin-bottom: 0;\n",
       "  padding: 0.5em;\n",
       "  box-sizing: border-box;\n",
       "  text-align: center;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 label.sk-toggleable__label-arrow:before {\n",
       "  /* Arrow on the left of the label */\n",
       "  content: \"▸\";\n",
       "  float: left;\n",
       "  margin-right: 0.25em;\n",
       "  color: var(--sklearn-color-icon);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 label.sk-toggleable__label-arrow:hover:before {\n",
       "  color: var(--sklearn-color-text);\n",
       "}\n",
       "\n",
       "/* Toggleable content - dropdown */\n",
       "\n",
       "#sk-container-id-1 div.sk-toggleable__content {\n",
       "  max-height: 0;\n",
       "  max-width: 0;\n",
       "  overflow: hidden;\n",
       "  text-align: left;\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-toggleable__content.fitted {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-toggleable__content pre {\n",
       "  margin: 0.2em;\n",
       "  border-radius: 0.25em;\n",
       "  color: var(--sklearn-color-text);\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-toggleable__content.fitted pre {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 input.sk-toggleable__control:checked~div.sk-toggleable__content {\n",
       "  /* Expand drop-down */\n",
       "  max-height: 200px;\n",
       "  max-width: 100%;\n",
       "  overflow: auto;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {\n",
       "  content: \"▾\";\n",
       "}\n",
       "\n",
       "/* Pipeline/ColumnTransformer-specific style */\n",
       "\n",
       "#sk-container-id-1 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  color: var(--sklearn-color-text);\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-label.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "/* Estimator-specific style */\n",
       "\n",
       "/* Colorize estimator box */\n",
       "#sk-container-id-1 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-estimator.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-label label.sk-toggleable__label,\n",
       "#sk-container-id-1 div.sk-label label {\n",
       "  /* The background is the default theme color */\n",
       "  color: var(--sklearn-color-text-on-default-background);\n",
       "}\n",
       "\n",
       "/* On hover, darken the color of the background */\n",
       "#sk-container-id-1 div.sk-label:hover label.sk-toggleable__label {\n",
       "  color: var(--sklearn-color-text);\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "/* Label box, darken color on hover, fitted */\n",
       "#sk-container-id-1 div.sk-label.fitted:hover label.sk-toggleable__label.fitted {\n",
       "  color: var(--sklearn-color-text);\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "/* Estimator label */\n",
       "\n",
       "#sk-container-id-1 div.sk-label label {\n",
       "  font-family: monospace;\n",
       "  font-weight: bold;\n",
       "  display: inline-block;\n",
       "  line-height: 1.2em;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-label-container {\n",
       "  text-align: center;\n",
       "}\n",
       "\n",
       "/* Estimator-specific */\n",
       "#sk-container-id-1 div.sk-estimator {\n",
       "  font-family: monospace;\n",
       "  border: 1px dotted var(--sklearn-color-border-box);\n",
       "  border-radius: 0.25em;\n",
       "  box-sizing: border-box;\n",
       "  margin-bottom: 0.5em;\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-estimator.fitted {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
       "}\n",
       "\n",
       "/* on hover */\n",
       "#sk-container-id-1 div.sk-estimator:hover {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-estimator.fitted:hover {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "/* Specification for estimator info (e.g. \"i\" and \"?\") */\n",
       "\n",
       "/* Common style for \"i\" and \"?\" */\n",
       "\n",
       ".sk-estimator-doc-link,\n",
       "a:link.sk-estimator-doc-link,\n",
       "a:visited.sk-estimator-doc-link {\n",
       "  float: right;\n",
       "  font-size: smaller;\n",
       "  line-height: 1em;\n",
       "  font-family: monospace;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  border-radius: 1em;\n",
       "  height: 1em;\n",
       "  width: 1em;\n",
       "  text-decoration: none !important;\n",
       "  margin-left: 1ex;\n",
       "  /* unfitted */\n",
       "  border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
       "  color: var(--sklearn-color-unfitted-level-1);\n",
       "}\n",
       "\n",
       ".sk-estimator-doc-link.fitted,\n",
       "a:link.sk-estimator-doc-link.fitted,\n",
       "a:visited.sk-estimator-doc-link.fitted {\n",
       "  /* fitted */\n",
       "  border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
       "  color: var(--sklearn-color-fitted-level-1);\n",
       "}\n",
       "\n",
       "/* On hover */\n",
       "div.sk-estimator:hover .sk-estimator-doc-link:hover,\n",
       ".sk-estimator-doc-link:hover,\n",
       "div.sk-label-container:hover .sk-estimator-doc-link:hover,\n",
       ".sk-estimator-doc-link:hover {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-3);\n",
       "  color: var(--sklearn-color-background);\n",
       "  text-decoration: none;\n",
       "}\n",
       "\n",
       "div.sk-estimator.fitted:hover .sk-estimator-doc-link.fitted:hover,\n",
       ".sk-estimator-doc-link.fitted:hover,\n",
       "div.sk-label-container:hover .sk-estimator-doc-link.fitted:hover,\n",
       ".sk-estimator-doc-link.fitted:hover {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-3);\n",
       "  color: var(--sklearn-color-background);\n",
       "  text-decoration: none;\n",
       "}\n",
       "\n",
       "/* Span, style for the box shown on hovering the info icon */\n",
       ".sk-estimator-doc-link span {\n",
       "  display: none;\n",
       "  z-index: 9999;\n",
       "  position: relative;\n",
       "  font-weight: normal;\n",
       "  right: .2ex;\n",
       "  padding: .5ex;\n",
       "  margin: .5ex;\n",
       "  width: min-content;\n",
       "  min-width: 20ex;\n",
       "  max-width: 50ex;\n",
       "  color: var(--sklearn-color-text);\n",
       "  box-shadow: 2pt 2pt 4pt #999;\n",
       "  /* unfitted */\n",
       "  background: var(--sklearn-color-unfitted-level-0);\n",
       "  border: .5pt solid var(--sklearn-color-unfitted-level-3);\n",
       "}\n",
       "\n",
       ".sk-estimator-doc-link.fitted span {\n",
       "  /* fitted */\n",
       "  background: var(--sklearn-color-fitted-level-0);\n",
       "  border: var(--sklearn-color-fitted-level-3);\n",
       "}\n",
       "\n",
       ".sk-estimator-doc-link:hover span {\n",
       "  display: block;\n",
       "}\n",
       "\n",
       "/* \"?\"-specific style due to the `<a>` HTML tag */\n",
       "\n",
       "#sk-container-id-1 a.estimator_doc_link {\n",
       "  float: right;\n",
       "  font-size: 1rem;\n",
       "  line-height: 1em;\n",
       "  font-family: monospace;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  border-radius: 1rem;\n",
       "  height: 1rem;\n",
       "  width: 1rem;\n",
       "  text-decoration: none;\n",
       "  /* unfitted */\n",
       "  color: var(--sklearn-color-unfitted-level-1);\n",
       "  border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 a.estimator_doc_link.fitted {\n",
       "  /* fitted */\n",
       "  border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
       "  color: var(--sklearn-color-fitted-level-1);\n",
       "}\n",
       "\n",
       "/* On hover */\n",
       "#sk-container-id-1 a.estimator_doc_link:hover {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-3);\n",
       "  color: var(--sklearn-color-background);\n",
       "  text-decoration: none;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 a.estimator_doc_link.fitted:hover {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-3);\n",
       "}\n",
       "</style><div id=\"sk-container-id-1\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>KMeans(n_clusters=5)</pre><b>In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. <br />On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.</b></div><div class=\"sk-container\" hidden><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-1\" type=\"checkbox\" checked><label for=\"sk-estimator-id-1\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow fitted\">&nbsp;&nbsp;KMeans<a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.5/modules/generated/sklearn.cluster.KMeans.html\">?<span>Documentation for KMeans</span></a><span class=\"sk-estimator-doc-link fitted\">i<span>Fitted</span></span></label><div class=\"sk-toggleable__content fitted\"><pre>KMeans(n_clusters=5)</pre></div> </div></div></div></div>"
      ],
      "text/plain": [
       "KMeans(n_clusters=5)"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "num_clusters = 5\n",
    "km = KMeans(n_clusters=num_clusters)\n",
    "km.fit(data)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "id": "f9c304c5-858e-4f78-b6a8-7930e889bdeb",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "          L         F         C         M         R  counts\n",
      "0 -0.326844 -0.572865  0.021563 -0.535633  1.710869   12184\n",
      "1 -0.717132 -0.275282 -0.182861 -0.270052 -0.362168   24249\n",
      "2  1.153762 -0.242127  0.036920 -0.243923 -0.293719   15478\n",
      "3  0.273570  1.265388  0.322939  1.202195 -0.719372    8373\n",
      "4  0.695134  3.883338  0.512419  3.869600 -0.849407    1760\n"
     ]
    }
   ],
   "source": [
    "r1 = pd.Series(km.labels_).value_counts()\n",
    "r2 = pd.DataFrame(km.cluster_centers_)\n",
    "r = pd.concat([r2, r1], axis=1)\n",
    "r.columns = list(data.columns) + ['counts']\n",
    "print(r)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "id": "eab9f8dd-fb8c-4503-90be-c7312b7d2b6b",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[4 4 4 ... 1 0 1]\n"
     ]
    }
   ],
   "source": [
    "print(km.labels_)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "id": "d523d9bc-4354-4106-88b6-220c5572598d",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>R</th>\n",
       "      <th>F</th>\n",
       "      <th>M</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>-0.944955</td>\n",
       "      <td>14.034129</td>\n",
       "      <td>26.761370</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>-0.911902</td>\n",
       "      <td>9.073286</td>\n",
       "      <td>13.126970</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>-0.889866</td>\n",
       "      <td>8.718940</td>\n",
       "      <td>12.653583</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>-0.416102</td>\n",
       "      <td>0.781591</td>\n",
       "      <td>12.540723</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>-0.922920</td>\n",
       "      <td>9.923716</td>\n",
       "      <td>13.898848</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "          R          F          M\n",
       "0 -0.944955  14.034129  26.761370\n",
       "1 -0.911902   9.073286  13.126970\n",
       "2 -0.889866   8.718940  12.653583\n",
       "3 -0.416102   0.781591  12.540723\n",
       "4 -0.922920   9.923716  13.898848"
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data_rfm = data[['R','F','M']]\n",
    "data_rfm.head(5)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "id": "18411372-1e8d-45cb-b48f-b802f82d18df",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<style>#sk-container-id-2 {\n",
       "  /* Definition of color scheme common for light and dark mode */\n",
       "  --sklearn-color-text: black;\n",
       "  --sklearn-color-line: gray;\n",
       "  /* Definition of color scheme for unfitted estimators */\n",
       "  --sklearn-color-unfitted-level-0: #fff5e6;\n",
       "  --sklearn-color-unfitted-level-1: #f6e4d2;\n",
       "  --sklearn-color-unfitted-level-2: #ffe0b3;\n",
       "  --sklearn-color-unfitted-level-3: chocolate;\n",
       "  /* Definition of color scheme for fitted estimators */\n",
       "  --sklearn-color-fitted-level-0: #f0f8ff;\n",
       "  --sklearn-color-fitted-level-1: #d4ebff;\n",
       "  --sklearn-color-fitted-level-2: #b3dbfd;\n",
       "  --sklearn-color-fitted-level-3: cornflowerblue;\n",
       "\n",
       "  /* Specific color for light theme */\n",
       "  --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
       "  --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, white)));\n",
       "  --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
       "  --sklearn-color-icon: #696969;\n",
       "\n",
       "  @media (prefers-color-scheme: dark) {\n",
       "    /* Redefinition of color scheme for dark theme */\n",
       "    --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
       "    --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, #111)));\n",
       "    --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
       "    --sklearn-color-icon: #878787;\n",
       "  }\n",
       "}\n",
       "\n",
       "#sk-container-id-2 {\n",
       "  color: var(--sklearn-color-text);\n",
       "}\n",
       "\n",
       "#sk-container-id-2 pre {\n",
       "  padding: 0;\n",
       "}\n",
       "\n",
       "#sk-container-id-2 input.sk-hidden--visually {\n",
       "  border: 0;\n",
       "  clip: rect(1px 1px 1px 1px);\n",
       "  clip: rect(1px, 1px, 1px, 1px);\n",
       "  height: 1px;\n",
       "  margin: -1px;\n",
       "  overflow: hidden;\n",
       "  padding: 0;\n",
       "  position: absolute;\n",
       "  width: 1px;\n",
       "}\n",
       "\n",
       "#sk-container-id-2 div.sk-dashed-wrapped {\n",
       "  border: 1px dashed var(--sklearn-color-line);\n",
       "  margin: 0 0.4em 0.5em 0.4em;\n",
       "  box-sizing: border-box;\n",
       "  padding-bottom: 0.4em;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "}\n",
       "\n",
       "#sk-container-id-2 div.sk-container {\n",
       "  /* jupyter's `normalize.less` sets `[hidden] { display: none; }`\n",
       "     but bootstrap.min.css set `[hidden] { display: none !important; }`\n",
       "     so we also need the `!important` here to be able to override the\n",
       "     default hidden behavior on the sphinx rendered scikit-learn.org.\n",
       "     See: https://github.com/scikit-learn/scikit-learn/issues/21755 */\n",
       "  display: inline-block !important;\n",
       "  position: relative;\n",
       "}\n",
       "\n",
       "#sk-container-id-2 div.sk-text-repr-fallback {\n",
       "  display: none;\n",
       "}\n",
       "\n",
       "div.sk-parallel-item,\n",
       "div.sk-serial,\n",
       "div.sk-item {\n",
       "  /* draw centered vertical line to link estimators */\n",
       "  background-image: linear-gradient(var(--sklearn-color-text-on-default-background), var(--sklearn-color-text-on-default-background));\n",
       "  background-size: 2px 100%;\n",
       "  background-repeat: no-repeat;\n",
       "  background-position: center center;\n",
       "}\n",
       "\n",
       "/* Parallel-specific style estimator block */\n",
       "\n",
       "#sk-container-id-2 div.sk-parallel-item::after {\n",
       "  content: \"\";\n",
       "  width: 100%;\n",
       "  border-bottom: 2px solid var(--sklearn-color-text-on-default-background);\n",
       "  flex-grow: 1;\n",
       "}\n",
       "\n",
       "#sk-container-id-2 div.sk-parallel {\n",
       "  display: flex;\n",
       "  align-items: stretch;\n",
       "  justify-content: center;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  position: relative;\n",
       "}\n",
       "\n",
       "#sk-container-id-2 div.sk-parallel-item {\n",
       "  display: flex;\n",
       "  flex-direction: column;\n",
       "}\n",
       "\n",
       "#sk-container-id-2 div.sk-parallel-item:first-child::after {\n",
       "  align-self: flex-end;\n",
       "  width: 50%;\n",
       "}\n",
       "\n",
       "#sk-container-id-2 div.sk-parallel-item:last-child::after {\n",
       "  align-self: flex-start;\n",
       "  width: 50%;\n",
       "}\n",
       "\n",
       "#sk-container-id-2 div.sk-parallel-item:only-child::after {\n",
       "  width: 0;\n",
       "}\n",
       "\n",
       "/* Serial-specific style estimator block */\n",
       "\n",
       "#sk-container-id-2 div.sk-serial {\n",
       "  display: flex;\n",
       "  flex-direction: column;\n",
       "  align-items: center;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  padding-right: 1em;\n",
       "  padding-left: 1em;\n",
       "}\n",
       "\n",
       "\n",
       "/* Toggleable style: style used for estimator/Pipeline/ColumnTransformer box that is\n",
       "clickable and can be expanded/collapsed.\n",
       "- Pipeline and ColumnTransformer use this feature and define the default style\n",
       "- Estimators will overwrite some part of the style using the `sk-estimator` class\n",
       "*/\n",
       "\n",
       "/* Pipeline and ColumnTransformer style (default) */\n",
       "\n",
       "#sk-container-id-2 div.sk-toggleable {\n",
       "  /* Default theme specific background. It is overwritten whether we have a\n",
       "  specific estimator or a Pipeline/ColumnTransformer */\n",
       "  background-color: var(--sklearn-color-background);\n",
       "}\n",
       "\n",
       "/* Toggleable label */\n",
       "#sk-container-id-2 label.sk-toggleable__label {\n",
       "  cursor: pointer;\n",
       "  display: block;\n",
       "  width: 100%;\n",
       "  margin-bottom: 0;\n",
       "  padding: 0.5em;\n",
       "  box-sizing: border-box;\n",
       "  text-align: center;\n",
       "}\n",
       "\n",
       "#sk-container-id-2 label.sk-toggleable__label-arrow:before {\n",
       "  /* Arrow on the left of the label */\n",
       "  content: \"▸\";\n",
       "  float: left;\n",
       "  margin-right: 0.25em;\n",
       "  color: var(--sklearn-color-icon);\n",
       "}\n",
       "\n",
       "#sk-container-id-2 label.sk-toggleable__label-arrow:hover:before {\n",
       "  color: var(--sklearn-color-text);\n",
       "}\n",
       "\n",
       "/* Toggleable content - dropdown */\n",
       "\n",
       "#sk-container-id-2 div.sk-toggleable__content {\n",
       "  max-height: 0;\n",
       "  max-width: 0;\n",
       "  overflow: hidden;\n",
       "  text-align: left;\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-2 div.sk-toggleable__content.fitted {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-2 div.sk-toggleable__content pre {\n",
       "  margin: 0.2em;\n",
       "  border-radius: 0.25em;\n",
       "  color: var(--sklearn-color-text);\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-2 div.sk-toggleable__content.fitted pre {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-2 input.sk-toggleable__control:checked~div.sk-toggleable__content {\n",
       "  /* Expand drop-down */\n",
       "  max-height: 200px;\n",
       "  max-width: 100%;\n",
       "  overflow: auto;\n",
       "}\n",
       "\n",
       "#sk-container-id-2 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {\n",
       "  content: \"▾\";\n",
       "}\n",
       "\n",
       "/* Pipeline/ColumnTransformer-specific style */\n",
       "\n",
       "#sk-container-id-2 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  color: var(--sklearn-color-text);\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-2 div.sk-label.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "/* Estimator-specific style */\n",
       "\n",
       "/* Colorize estimator box */\n",
       "#sk-container-id-2 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-2 div.sk-estimator.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-2 div.sk-label label.sk-toggleable__label,\n",
       "#sk-container-id-2 div.sk-label label {\n",
       "  /* The background is the default theme color */\n",
       "  color: var(--sklearn-color-text-on-default-background);\n",
       "}\n",
       "\n",
       "/* On hover, darken the color of the background */\n",
       "#sk-container-id-2 div.sk-label:hover label.sk-toggleable__label {\n",
       "  color: var(--sklearn-color-text);\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "/* Label box, darken color on hover, fitted */\n",
       "#sk-container-id-2 div.sk-label.fitted:hover label.sk-toggleable__label.fitted {\n",
       "  color: var(--sklearn-color-text);\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "/* Estimator label */\n",
       "\n",
       "#sk-container-id-2 div.sk-label label {\n",
       "  font-family: monospace;\n",
       "  font-weight: bold;\n",
       "  display: inline-block;\n",
       "  line-height: 1.2em;\n",
       "}\n",
       "\n",
       "#sk-container-id-2 div.sk-label-container {\n",
       "  text-align: center;\n",
       "}\n",
       "\n",
       "/* Estimator-specific */\n",
       "#sk-container-id-2 div.sk-estimator {\n",
       "  font-family: monospace;\n",
       "  border: 1px dotted var(--sklearn-color-border-box);\n",
       "  border-radius: 0.25em;\n",
       "  box-sizing: border-box;\n",
       "  margin-bottom: 0.5em;\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-2 div.sk-estimator.fitted {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
       "}\n",
       "\n",
       "/* on hover */\n",
       "#sk-container-id-2 div.sk-estimator:hover {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-2 div.sk-estimator.fitted:hover {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "/* Specification for estimator info (e.g. \"i\" and \"?\") */\n",
       "\n",
       "/* Common style for \"i\" and \"?\" */\n",
       "\n",
       ".sk-estimator-doc-link,\n",
       "a:link.sk-estimator-doc-link,\n",
       "a:visited.sk-estimator-doc-link {\n",
       "  float: right;\n",
       "  font-size: smaller;\n",
       "  line-height: 1em;\n",
       "  font-family: monospace;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  border-radius: 1em;\n",
       "  height: 1em;\n",
       "  width: 1em;\n",
       "  text-decoration: none !important;\n",
       "  margin-left: 1ex;\n",
       "  /* unfitted */\n",
       "  border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
       "  color: var(--sklearn-color-unfitted-level-1);\n",
       "}\n",
       "\n",
       ".sk-estimator-doc-link.fitted,\n",
       "a:link.sk-estimator-doc-link.fitted,\n",
       "a:visited.sk-estimator-doc-link.fitted {\n",
       "  /* fitted */\n",
       "  border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
       "  color: var(--sklearn-color-fitted-level-1);\n",
       "}\n",
       "\n",
       "/* On hover */\n",
       "div.sk-estimator:hover .sk-estimator-doc-link:hover,\n",
       ".sk-estimator-doc-link:hover,\n",
       "div.sk-label-container:hover .sk-estimator-doc-link:hover,\n",
       ".sk-estimator-doc-link:hover {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-3);\n",
       "  color: var(--sklearn-color-background);\n",
       "  text-decoration: none;\n",
       "}\n",
       "\n",
       "div.sk-estimator.fitted:hover .sk-estimator-doc-link.fitted:hover,\n",
       ".sk-estimator-doc-link.fitted:hover,\n",
       "div.sk-label-container:hover .sk-estimator-doc-link.fitted:hover,\n",
       ".sk-estimator-doc-link.fitted:hover {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-3);\n",
       "  color: var(--sklearn-color-background);\n",
       "  text-decoration: none;\n",
       "}\n",
       "\n",
       "/* Span, style for the box shown on hovering the info icon */\n",
       ".sk-estimator-doc-link span {\n",
       "  display: none;\n",
       "  z-index: 9999;\n",
       "  position: relative;\n",
       "  font-weight: normal;\n",
       "  right: .2ex;\n",
       "  padding: .5ex;\n",
       "  margin: .5ex;\n",
       "  width: min-content;\n",
       "  min-width: 20ex;\n",
       "  max-width: 50ex;\n",
       "  color: var(--sklearn-color-text);\n",
       "  box-shadow: 2pt 2pt 4pt #999;\n",
       "  /* unfitted */\n",
       "  background: var(--sklearn-color-unfitted-level-0);\n",
       "  border: .5pt solid var(--sklearn-color-unfitted-level-3);\n",
       "}\n",
       "\n",
       ".sk-estimator-doc-link.fitted span {\n",
       "  /* fitted */\n",
       "  background: var(--sklearn-color-fitted-level-0);\n",
       "  border: var(--sklearn-color-fitted-level-3);\n",
       "}\n",
       "\n",
       ".sk-estimator-doc-link:hover span {\n",
       "  display: block;\n",
       "}\n",
       "\n",
       "/* \"?\"-specific style due to the `<a>` HTML tag */\n",
       "\n",
       "#sk-container-id-2 a.estimator_doc_link {\n",
       "  float: right;\n",
       "  font-size: 1rem;\n",
       "  line-height: 1em;\n",
       "  font-family: monospace;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  border-radius: 1rem;\n",
       "  height: 1rem;\n",
       "  width: 1rem;\n",
       "  text-decoration: none;\n",
       "  /* unfitted */\n",
       "  color: var(--sklearn-color-unfitted-level-1);\n",
       "  border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
       "}\n",
       "\n",
       "#sk-container-id-2 a.estimator_doc_link.fitted {\n",
       "  /* fitted */\n",
       "  border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
       "  color: var(--sklearn-color-fitted-level-1);\n",
       "}\n",
       "\n",
       "/* On hover */\n",
       "#sk-container-id-2 a.estimator_doc_link:hover {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-3);\n",
       "  color: var(--sklearn-color-background);\n",
       "  text-decoration: none;\n",
       "}\n",
       "\n",
       "#sk-container-id-2 a.estimator_doc_link.fitted:hover {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-3);\n",
       "}\n",
       "</style><div id=\"sk-container-id-2\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>KMeans(n_clusters=5)</pre><b>In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. <br />On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.</b></div><div class=\"sk-container\" hidden><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-2\" type=\"checkbox\" checked><label for=\"sk-estimator-id-2\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow fitted\">&nbsp;&nbsp;KMeans<a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.5/modules/generated/sklearn.cluster.KMeans.html\">?<span>Documentation for KMeans</span></a><span class=\"sk-estimator-doc-link fitted\">i<span>Fitted</span></span></label><div class=\"sk-toggleable__content fitted\"><pre>KMeans(n_clusters=5)</pre></div> </div></div></div></div>"
      ],
      "text/plain": [
       "KMeans(n_clusters=5)"
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "km.fit(data_rfm) #模型对只包含rfm数据集训练"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "id": "2fef82fd-390d-4140-997d-cbb114b7a56f",
   "metadata": {},
   "outputs": [],
   "source": [
    "labels = km.labels_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "id": "07e82d6d-fb80-4cc7-b5ed-5c2e88017354",
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.preprocessing import StandardScaler\n",
    "import pandas as pd"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "id": "df9c8a00-a76c-486c-9614-65a60532f254",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "          R         F         M  counts\n",
      "0 -0.127731 -0.845511 -0.842570   28701\n",
      "1  1.958296 -0.917276 -0.893791   13822\n",
      "2 -0.477175 -0.390333 -0.396647   13499\n",
      "3 -0.727842  1.774197  1.794179    4909\n",
      "4 -0.625549  0.378923  0.338828    1113\n"
     ]
    }
   ],
   "source": [
    "# 计算每个聚类的样本数量\n",
    "r1 = pd.Series(km.labels_).value_counts()\n",
    "\n",
    "# 获取聚类中心\n",
    "r2 = pd.DataFrame(km.cluster_centers_)\n",
    "\n",
    "# 确保r1的索引与r2的行索引对齐\n",
    "r1.index = r2.index\n",
    "\n",
    "# 合并聚类中心和聚类大小\n",
    "rr = pd.concat([r2, r1], axis=1)\n",
    "\n",
    "# 设置列名\n",
    "rr.columns = list(data_rfm.columns) + ['counts']\n",
    "\n",
    "# 确保所有列名都是字符串\n",
    "rr.columns = rr.columns.astype(str)\n",
    "\n",
    "# 初始化StandardScaler\n",
    "ss = StandardScaler()\n",
    "\n",
    "# 标准化合并后的DataFrame（不包括'counts'列）\n",
    "rr_scaled = pd.DataFrame(ss.fit_transform(rr.iloc[:, :-1]), columns=rr.columns[:-1])\n",
    "\n",
    "# 添加标准化后的聚类大小\n",
    "rr_scaled['counts'] = rr['counts']\n",
    "\n",
    "# 显示结果\n",
    "print(rr_scaled)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "id": "b9206e3a-4144-4b84-8925-82d83357c9c1",
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "\n",
    "import matplotlib.pyplot as plt\n",
    "from matplotlib.patches import Circle, RegularPolygon\n",
    "from matplotlib.path import Path\n",
    "from matplotlib.projections.polar import PolarAxes\n",
    "from matplotlib.projections import register_projection\n",
    "from matplotlib.spines import Spine\n",
    "from matplotlib.transforms import Affine2D\n",
    "\n",
    "\n",
    "def radar_factory(num_vars, frame='circle'):\n",
    "    \n",
    "    # 计算得到evenly-spaced axis angles\n",
    "    theta = np.linspace(0, 2*np.pi, num_vars, endpoint=False)\n",
    "\n",
    "    class RadarAxes(PolarAxes):\n",
    "\n",
    "        name = 'radar'\n",
    "        # 使用1条线段连接指定点\n",
    "        RESOLUTION = 1\n",
    "\n",
    "        def __init__(self, *args, **kwargs):\n",
    "            super().__init__(*args, **kwargs)\n",
    "            # 旋转绘图，使第一个轴位于顶部\n",
    "            self.set_theta_zero_location('N')\n",
    "\n",
    "        def fill(self, *args, closed=True, **kwargs):\n",
    "            \"\"\"覆盖填充，以便默认情况下关闭该行\"\"\"\n",
    "            return super().fill(closed=closed, *args, **kwargs)\n",
    "\n",
    "        def plot(self, *args, **kwargs):\n",
    "            \"\"\"覆盖填充，以便默认情况下关闭该行\"\"\"\n",
    "            lines = super().plot(*args, **kwargs)\n",
    "            for line in lines:\n",
    "                self._close_line(line)\n",
    "\n",
    "        def _close_line(self, line):\n",
    "            x, y = line.get_data()\n",
    "            # FIXME: x[0], y[0] 处的标记加倍\n",
    "            if x[0] != x[-1]:\n",
    "                x = np.concatenate((x, [x[0]]))\n",
    "                y = np.concatenate((y, [y[0]]))\n",
    "                line.set_data(x, y)\n",
    "\n",
    "        def set_varlabels(self, labels):\n",
    "            self.set_thetagrids(np.degrees(theta), labels)\n",
    "\n",
    "        def _gen_axes_patch(self):\n",
    "            # 轴必须以（0.5，0.5）为中心并且半径为0.5\n",
    "            # 在轴坐标中。\n",
    "            if frame == 'circle':\n",
    "                return Circle((0.5, 0.5), 0.5)\n",
    "            elif frame == 'polygon':\n",
    "                return RegularPolygon((0.5, 0.5), num_vars,\n",
    "                                      radius=.5, edgecolor=\"k\")\n",
    "            else:\n",
    "                raise ValueError(\"unknown value for 'frame': %s\" % frame)\n",
    "\n",
    "        def _gen_axes_spines(self):\n",
    "            if frame == 'circle':\n",
    "                return super()._gen_axes_spines()\n",
    "            elif frame == 'polygon':\n",
    "                # spine_type 必须是'left'/'right'/'top'/'bottom'/'circle'.\n",
    "                spine = Spine(axes=self,\n",
    "                              spine_type='circle',\n",
    "                              path=Path.unit_regular_polygon(num_vars))\n",
    "                # unit_regular_polygon 给出以1为中心的半径为1的多边形\n",
    "                #（0，0），但我们希望以（0.5，\n",
    "                #   0.5）的坐标轴。\n",
    "                spine.set_transform(Affine2D().scale(.5).translate(.5, .5)\n",
    "                                    + self.transAxes)\n",
    "                return {'polar': spine}\n",
    "            else:\n",
    "                raise ValueError(\"unknown value for 'frame': %s\" % frame)\n",
    "\n",
    "    register_projection(RadarAxes)\n",
    "    return theta"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "id": "d4456ddc-998f-4f15-82bc-66ac63185e95",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 500x500 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "N = num_clusters\n",
    "theta = radar_factory(N, frame='polygon')\n",
    "\n",
    "data = r.to_numpy()\n",
    "\n",
    "fig, ax = plt.subplots(figsize=(5, 5), nrows=1, ncols=1,\n",
    "                         subplot_kw=dict(projection='radar'))\n",
    "fig.subplots_adjust(wspace=0.25, hspace=0.20, top=0.85, bottom=0.05)\n",
    "\n",
    "# 去掉最后一列\n",
    "case_data = data[:, :-1]\n",
    "# 设置纵坐标不可见\n",
    "ax.get_yaxis().set_visible(False)\n",
    "# 图片标题\n",
    "title = \"Radar Chart for Different Means\"\n",
    "ax.set_title(title, weight='bold', size='medium', position=(0.5, 1.1),\n",
    "             horizontalalignment='center', verticalalignment='center')\n",
    "for d in case_data:\n",
    "    # 画边\n",
    "    ax.plot(theta, d)\n",
    "    # 填充颜色\n",
    "    ax.fill(theta, d, alpha=0.05)\n",
    "# 设置纵坐标名称\n",
    "ax.set_varlabels(features)\n",
    "\n",
    "# 添加图例\n",
    "labels = [\"CustomerCluster_\" + str(i) for i in range(1,6)]\n",
    "legend = ax.legend(labels, loc=(0.9, .75), labelspacing=0.1)\n",
    "\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "id": "0f90c8c3-f381-4426-b747-740764c3d323",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 500x500 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "theta = radar_factory(3, frame='polygon')\n",
    "\n",
    "data = rr.to_numpy()\n",
    "\n",
    "fig, ax = plt.subplots(figsize=(5, 5), nrows=1, ncols=1,\n",
    "                         subplot_kw=dict(projection='radar'))\n",
    "fig.subplots_adjust(wspace=0.25, hspace=0.20, top=0.85, bottom=0.05)\n",
    "\n",
    "# 去掉最后一列\n",
    "case_data = data[:, :-1]\n",
    "# 设置纵坐标不可见\n",
    "ax.get_yaxis().set_visible(False)\n",
    "# 图片标题\n",
    "title = \"Radar Chart for Different Means\"\n",
    "ax.set_title(title, weight='bold', size='medium', position=(0.5, 1.1),\n",
    "             horizontalalignment='center', verticalalignment='center')\n",
    "for d in case_data:\n",
    "    # 画边\n",
    "    ax.plot(theta, d)\n",
    "    # 填充颜色\n",
    "    ax.fill(theta, d, alpha=0.05)\n",
    "# 设置纵坐标名称\n",
    "ax.set_varlabels(['R','F','M'])\n",
    "\n",
    "# 添加图例\n",
    "labels = [\"CustomerCluster_\" + str(i) for i in range(1,6)]\n",
    "legend = ax.legend(labels, loc=(0.9, .75), labelspacing=0.1)\n",
    "\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "id": "7d561785-85da-4604-a79a-e2778bd7113a",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([0, 0, 0, ..., 0, 0, 0])"
      ]
     },
     "execution_count": 39,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.cluster import DBSCAN\n",
    "# db = DBSCAN(eps=10,min_samples=2).fit(data_db)\n",
    "\n",
    "# Kagging debug\n",
    "db = DBSCAN(eps=10,min_samples=2).fit(data_db.sample(10000))\n",
    "\n",
    "DBSCAN_labels = db.labels_\n",
    "\n",
    "DBSCAN_labels"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "a7c6f478-ce6a-49fb-95f0-21d0d513cb8c",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.12.4"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
